/*
ID: icerupt1
PROG: stamps
LANG: C++11
*/

/* solution
 *
 * 其实是个水题。。。交了14发。动态规划，有点像一个完全背包。
 * 维护一个带容量的状态就好，转移的时候不用枚举第n个邮票的个数，
 * 直接从之前去掉一份面值的状态转移过来就好。
 * 说明这点上，还没悟透。
 *
*/
#include <fstream>
#include <iostream>
#include <algorithm>

std::ifstream fin {"stamps.in" };
std::ofstream fout{"stamps.out"};

int const oo = 1 << 25;
int const maxk = 201;
int const maxn = 51;
int f[maxk * 10001];
int da[maxn];
int n, k, sum;

int main()
{
	fin >> k >> n;
	for (int i = 0; i < n; i++) {
		fin >> da[i];
		sum = std::max(sum, da[i]);
	}
	std::sort(da, da + n);
	sum *= k;

	for (int i = 1; i <= sum; i++) f[i] = oo;

	for (int i = 0; i < n; i++)
		for (int j = da[i]; j <= sum; j++)
				f[j] = std::min(f[j], f[j - da[i]] + 1);
	int ans = 0;
	for (; ans <= sum && f[ans] <= k; ans++);

	std::cout << ans - 1 << '\n';
	fout << ans - 1 << '\n';
}

